1. Field of the Invention
The present invention relates generally to digital systems, especially to such digital systems utilizing processor based devices that are input/output intensive and, more specifically to a digital I/O bus controller circuit with auto-incrementing, auto-decrementing, and non incrementing/decrementing access data ports.
2. Description of Prior Art
Personal Computer systems in general and IBM personal computers in particular have attained widespread use for providing computer power to many segments of today's modern society. A Personal computer system can usually be defined as a desk top, floor standing, or a portable microcomputer that is comprised of a system unit having a single system processor and associated volatile and non-volatile memory, a display monitor and/or other output devices, a keyboard and/or other input devices, one or more diskette drives, a fixed disk storage, and, optionally, a printer. One of the distinguishing characteristics of these systems is the use of a mother board or system planar to electrically connect these components together. These systems are designed primarily to give independent computing power to a single user and are inexpensively priced for purchase by individuals or small businesses. Examples of such personal computer systems are IBM's PERSONAL COMPUTER AT and IBM's PERSONAL SYSTEM/2.
These systems can be classified into two general families. The first family, usually referred to as Family I Models, use a bus architecture exemplified by the IBM PERSONAL COMPUTER AT and the other Industry Standard Architecture (ISA) machines. The second family, referred to as Family II Models, use IBM's MICRO CHANNEL bus architecture exemplified by IBM's PERSONAL SYSTEM/2.
The Family I models typically have used the popular INTEL 8088 or 8086 microprocessor as the system processor. These processors have the ability to address one megabyte of memory.
The Family II models typically use the high speed INTEL 80286, 80386, and 80486 microprocessors which can operate in a real mode to emulate the slower speed INTEL 8086 microprocessor or a protected mode which extends the addressing range from megabytes to gigabytes for some models. In essence, the real mode feature of the 80286, 80386, and 80486 processors provide hardware compatibility with software written for the 8086 and 8088 microprocessors.
The development of personal computer systems is an extremely competitive industry. There are many standards by which personal computer systems are judged. Some of the more important standards are affordability, expandability, processor type and speed, and overall system speed. One of the most important criteria by which a computer system is judged by is the system price compared to the overall system speed.
A computer system's overall speed is commonly influenced by: a) the system processor's operating speed, b) the input and output data transfer rates within the system, and c) the efficiency with which the instruction code is implemented.
Normally, the system processor has the largest influence on the system's overall speed. A processor's speed is largely determined by the time required for the processor to execute a single program instruction, or alternatively, the number of program instructions that the processor can execute in one second. Fast processors, such as the INTEL 80486, execute instructions in the range of millions of instructions per second. The term "millions of instructions per second" is generally referred to by the acronym "MIPS".
Often, input and output devices have data transfer rates that are slower than the system processor's. As a result, the system processor must "wait" until the data transfer is complete before it can proceed to execute the next program instruction.
Typically, the system processor accomplishes this "wait" through its programming code. A common method used is to create a set of program instructions that will continuously test an input/output status bit to determine if the data transfer is complete. The instruction set usually creates a continuous loop that tests this status bit repeatedly until a test condition is satisfied.
The efficiency with which the instruction code is implemented also influences the computer system speed. Each program instruction takes a finite time to be executed within the system processor. Execution time generally varies depending on what type of program instruction is being executed. The standard listed for a particular system processor is generally the average time required for execution of an instruction. Given that a system processor requires a finite length of time to execute a single program instruction, it can generally be said that the time to execute three instructions will be less than the time required to execute four instructions. Thus, if a function could be implemented in three instructions instead of four, it would create the desirable parallel effects of (a) a quicker execution time and (b) a reduction in the amount memory necessary to store the program.
Conventional processor based devices, generally, perform input and output operations through a single address port and a single data port. A program must first load the address port with an address of a device's internal register and then either read the register data, or write data to the register, via the data port.
A system processor must, at times, also "poll" a device register. The system processor "polls" a device register when it executes many reads from the register to determine if a device's status has changed so that the program can continue onto the next operation. In a conventional processor based device, "polling" requires that the address port be reloaded constantly with the address of the device's internal register that is being "polled".
In an input and output intensive computer system, many read and write functions are necessary to transfer data within the system. The amount of program code required to implement such functions is directly related to the system's hardware architecture. For a conventional system architecture with a single address port and a single data port, the required number of program code instructions can be large. The resulting effect on the computer system is three fold. First, more memory will be required to store the program code. Second, a larger memory requirement for the system will increase the bill of materials and the system's price. Third, the computer system's overall operating speed will be reduced due to a large number of program instructions required to be executed by the system processor for the data transfers.
In Summary, conventional processor based computer systems suffer from a number of disadvantages when they are required to perform a large number of input and output operations:
(a) They include a single address port and single data port;
(b) They require a large amount of memory to store the program code required to perform the large number of input and output operations and as a result increased costs in providing more memory; and
(c) Intensive input and output operations require a system processor to execute many program instructions, such as "polling", which tend to reduce the overall computer system's speed.